
App({
  /**
   * 封装的微信云托管调用方法
   * @param {*} obj 业务请求信息，可按照需要扩展
   * @param {*} number 请求等待，默认不用传，用于初始化等待
   */
  async call(obj, number=0){
    const that = this
    if(that.cloud == null){
      that.cloud = new wx.cloud.Cloud({
        resourceAppid: 'wx0214d4cb561d0fdf',
        resourceEnv: 'prod-1g5uop92b6887343', // 微信云托管的环境ID
      })
      await that.cloud.init() .then(()=>{
        console.log('云托管实例初始化成功');
      }).catch(err => {
        console.error('云托管初始化失败：', err);
      });
    }
    const headerParams={'X-WX-SERVICE': 'fire-assistant-s'}
    try{
      const result = await that.cloud.callContainer({
        path: obj.path, // 填入业务自定义路径和参数，根目录，就是 / 
        method: obj.method||'GET', // 按照自己的业务开发，选择对应的方法
        data: obj.data,
        header: obj.header? obj.header : headerParams,
        // 其余参数同 wx.request //o1jcc5SFiDyjNVL3vc-bq9_Tw1BM
      })
      return result.data // 业务数据在 data 中
    } catch(e){
      const error = e.toString()
       // 如果错误信息为未初始化，则等待300ms再次尝试，因为 init 过程是异步的
      if(error.indexOf("Cloud API isn't enabled")!=-1 && number<3){
        return new Promise((resolve)=>{
          setTimeout(function(){
            resolve(that.call(obj,number+1))
          },300)
        })
      } else {
        throw new Error(`微信云托管调用失败${error}`)
      }
    }
  },
  globalData: {
    cos: null,
  }
})

